package br.com.fpf.pontoapp.model.dto;

import java.text.SimpleDateFormat;
import java.util.Date;

import br.com.fpf.pontoapp.model.util.DateUtil;

public class Batida {
	private SimpleDateFormat format = new SimpleDateFormat("HH:mm");

	public String getDia() {
		return dia;
	}

	public void setDia(String dia) {
		this.dia = dia;
	}

	public String getBatidas() {
		return batidas;
	}

	public void setBatidas(String batidas) {
		this.batidas = batidas;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSaidaSugerida() {
		String[] horasBatidas = batidas.split(", ");
		if (horasBatidas.length <= 2) {

			saidaSugerida = format.format(DateUtil.somaDatas(
					DateUtil.formataData(horasBatidas[0]),
					DateUtil.formataData("10:00")));
		}
		if (horasBatidas.length >= 3) {
			Date intervalo = DateUtil.calculaIntervaloEmHoras(
					DateUtil.formataData(horasBatidas[1]),
					DateUtil.formataData(horasBatidas[2]));
			if (intervalo.after(DateUtil.formataData("01:15"))) {
				Date ultrapassado = DateUtil.subtraiDatas(intervalo,
						DateUtil.formataData("01:15"));
				saidaSugerida = format.format(DateUtil.somaDatas(DateUtil
						.somaDatas(DateUtil.formataData(horasBatidas[0]),
								ultrapassado), DateUtil.formataData("10:00")));
			} else {
				saidaSugerida = format.format(DateUtil.somaDatas(
						DateUtil.formataData(horasBatidas[0]),
						DateUtil.formataData("10:00")));
			}

		}

		return saidaSugerida;
	}

	public String getHorasTrabalhadas() {
		String[] horasBatidas = batidas.split(", ");

		if (horasBatidas.length >= 4) {
			Date intervalo1 = DateUtil.calculaIntervaloEmHoras(
					DateUtil.formataData(horasBatidas[0]),
					DateUtil.formataData(horasBatidas[1]));
			Date intervalo2 = DateUtil.calculaIntervaloEmHoras(
					DateUtil.formataData(horasBatidas[2]),
					DateUtil.formataData(horasBatidas[3]));
			horasTrabalhadas = format.format(DateUtil.somaDatas(intervalo1,
					intervalo2));
		}

		return horasTrabalhadas;
	}

	public String getObservacao() {
		if (!horasTrabalhadas.equals("")) {
			if (DateUtil.formataData(horasTrabalhadas).before(
					DateUtil.formataData("08:45"))) {
				observacao = "Sa�da Antecipada de "
						+ format.format(DateUtil.subtraiDatas(
								DateUtil.formataData(horasTrabalhadas),
								DateUtil.formataData("08:45")));
			}
			if (DateUtil.formataData(horasTrabalhadas).after(
					DateUtil.formataData("08:45"))) {
				observacao = "Regime Extraordin�rio de "
						+ format.format(DateUtil.subtraiDatas(
								DateUtil.formataData("08:45"),
								DateUtil.formataData(horasTrabalhadas)));
			}
		} else {
			observacao = "";
		}
		return observacao;
	}

	String dia = "";
	String batidas = "";
	String horasTrabalhadas = "";
	String observacao = "";
	String nome = "";
	String saidaSugerida = "";
}
